<?php
require_once("scripts/single_product.php");
require_once("scripts/database.php");

$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
if (!$connection)
{
	echo("Połączenie z bazą danych nie powiodło się. 
		Spróbuj ponownie później lub skontaktuj się z administratorem serwisu. 
		<br>Przepraszamy za utrudnienia.");
	exit(1);
}

checkForSQLInjection();
$products = getProductsFromDatabase($connection);
for ($i = 0; $i < count($products); $i++)
{
	//obsługa pojedynczego produktu
	displayProductOnList($products[$i]);
}

mysqli_close($connection);

//--------------------------------------------------------------------------//

function getProductsFromDatabase($connection)
{
	$currIndex = 0;
	$row = array();
	$products = array();
	$name = isset($_GET["name"]) ? $_GET["name"] : "";
	$name = str_replace('*', '%', $name);
	$name .= "%";
	$category = isset($_GET["category"]) ? $_GET["category"] : "";
	$category = str_replace('*', '%', $category);
	$category .= "%";
	$subcategory = isset($_GET["subcategory"]) ? $_GET["subcategory"] : "";
	$subcategory = str_replace('*', '%', $subcategory);
	$subcategory .= "%";
	
	$stmt = mysqli_prepare($connection, "SELECT * FROM produkty WHERE nazwa LIKE ?
							 AND kategoria LIKE ? AND podkategoria LIKE ?;");
	mysqli_stmt_bind_param($stmt, 'sss', $name, $category, $subcategory);
	mysqli_stmt_execute($stmt);
	mysqli_stmt_bind_result($stmt, $row[0], $row[1], $row[2], $row[3], $row[4]);
	while(mysqli_stmt_fetch($stmt))
	{
		for ($i = 0; $i < count($row); $i++)
			$products[$currIndex][$i] = $row[$i];
		$currIndex++;
	}
	mysqli_stmt_close($stmt);
	return $products;
}

function checkForSQLInjection()
{
	$param = '';
	for ($i = 0; $i < 3; $i++)
	{
		switch ($i)
		{
			case 0: if (isset($_GET["name"]))
						$param = $_GET["name"];
					break;
			case 1: if (isset($_GET["category"]))
						$param = $_GET["category"];
					break;
			case 2: if (isset($_GET["subcategory"]))
						$param = $_GET["subcategory"];
					break;
			default: break;
		}
		if ((strpos($param, "SELECT") !== false) || (strpos($param, "DELETE") !== false)
			|| (strpos($param, "UPDATE") !== false) || (strpos($param, "DROP") !== false)
			|| (strpos($param, "ALTER") !== false) || (strpos($param, "DATABASE") !== false)
			|| (strpos($param, "WHERE") !== false))
		{
			echo("Wykryto SQL Injection. System automatycznie powiadomił policję.");
			exit(1);		
		}
	}
}
?>